package com.hsnn.medstgmini.base.std.service;

import java.util.List;
import java.util.Map;

import com.hsnn.medstgmini.base.std.model.StdExpert;
import com.hsnn.medstgmini.base.std.model.StdExpertLog;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.Pagination;
/**
 * 
 * @author kee
 * @category  专家库
 * @date  2015年6月9日
 */
public interface StdExpertManager  {


	/**
	 * 
	 *@category 查询专家库列表
	 *@author yanke
	 *@date 2015年6月9日
	 */
	Pagination getStdExpertList(Pagination page);
	
	/**
	 * 
	 *@category 根据id查询专家库信息
	 *@author yanke
	 *@date 2015年6月9日
	 */
	StdExpert getStdExpertById(String id);
	
	/**
	 * 
	 *@category 保存专家库信息
	 *@author yanke
	 *@date 2015年6月9日
	 *void
	 */
	void saveStdExpert(StdExpert stdExpert);
	
	/**
	 * 
	 *@category 查询专家库维护记录列表
	 *@author yanke
	 *@date 2015年6月9日
	 *List<StdExpertLog>
	 */
	List<Object> getStdExpertLogList(Pagination page, StdExpertLog stdExpertLog);
	
	/**
	 * 
	 *@category 停用启用（状态改变）
	 *@author yanke
	 *@date 2015年6月9日
	 *void
	 */
	void changeStatus(StdExpert stdExpert);
	
	
	
	/**
	 * 
	 *@category 批量停用启用（状态改变）
	 *@author yanke
	 *@date 2015年6月9日
	 *void
	 */
	int batchChangeStatus(StdExpert stdExpert);
	
	/**
	 * 
	 *@category 查询维护记录修改前和修改后的记录
	 *@author yanke
	 *@date 2015年6月9日
	 *List<StdExpert>
	 */
	List<StdExpertLog> getStdExpertCompareList(StdExpertLog stdExpertLog);
	/**
	 * 
	 *@category 查询维护记录修改前和修改后的记录
	 *@author 周奇
	 *@date 2015年7月29日
	 *List<StdExpert>
	 */
	List<StdExpert> getStdExpertListByExpertCode(String expertCode);
	
	/**
	 * 
	 *@category 查询维护记录详情
	 *@author yanke
	 *@date 2015年9月21日
	 *List<StdExpert>
	 */
	List<Map<String,Object>> getStdExpertLogDetail(Pagination page);
	
	/**
	 * 
	 *@category 专家库详情
	 *@author yanke
	 *@date 2015年9月21日
	 */
	List<Map<String,Object>> getStdExpertDetail(Pagination page);
	
	/**
	 * 新增编辑保存
	 * @param page
	 */
	void addAndEdit(StdExpert stdExpert , SysUser user);
	
	/**
	 * 根据code或name查看有无重复数据
	 * @param code,name
	 * @return
	 */
	List<StdExpert> getPackunitBy(String key, String value,String id);

	Pagination getStdExpertNoPage(Pagination page);

}
